# -*- coding: utf-8 -*-
"""Main Controller"""

from pylons.i18n import ugettext as _, lazy_ugettext as l_
from sqlalchemy import and_
from suportepaispython.controllers.error import ErrorController
from suportepaispython.lib.base import BaseController, Controller
from suportepaispython.model import DBSession, metadata
from suportepaispython.model.Pais import Pais
from tg import expose, flash, require, url, request, redirect


from suportepaispython.controllers.ConsultaPaisUC import ConsultaPaisUC
from suportepaispython.controllers.IncludePaisUC import IncludePaisUC

from suportepaispython.controllers.consultaPais.target.ConsultaPaisUseCaseGen import ConsultaPaisUseCaseGen
from suportepaispython.controllers.incluiPais.target.IncluiPaisUseCaseGen import IncluiPaisUseCaseGen


__all__ = ['RootController']


class RootController(BaseController): 
    
    """Casos de uso gerados"""
    incluiPais = IncluiPaisUseCaseGen()
    consultaPais = ConsultaPaisUseCaseGen()
    
    """Casos de uso não gerados"""
    consultapaisuc = ConsultaPaisUC()
    includepaisuc = IncludePaisUC()    

    error = ErrorController()
    
    @expose('suportepaispython.templates.index')
    def index(self,**kargs):
        return dict(page='index')
    
    @expose('suportepaispython.templates.about')
    def about(self):
        return dict(page='about')

    @expose('suportepaispython.templates.pais')
    def pais(self,codigoPais="USA"):
        pais = DBSession.query(Pais).filter_by(codigo=codigoPais).one()
        return dict(paisVar=pais)
    
    @expose('suportepaispython.templates.updatepais')
    def updatepais(self,id,submit):
        pais = DBSession.query(Pais).filter_by(id=id).one()
        return dict(paisVar=pais)
            
    @expose('suportepaispython.templates.pais')
    def do_update(self,codigoPais,codigoAuxiliar,descricao,valor,submit):
        pais = DBSession.query(Pais).filter_by(codigo=codigoPais).one()
        pais.descricao=descricao
        pais.codigoAuxiliar=codigoAuxiliar
        pais.valor=valor
        return dict(paisVar=pais)
    
    @expose('suportepaispython.templates.resultdeletepais')
    def do_deletepais(self,id,submit):
        pais = DBSession.query(Pais).filter(and_(Pais.id==id)).one()
        DBSession.delete(pais)
        return dict(page="")
    
    @expose('suportepaispython.templates.do_detail')
    def do_detail(self,id,submit):
        pais = DBSession.query(Pais).filter(and_(Pais.id==id)).one()
        return dict(paisVar=pais)
    
  